//
//  ViewController.m
//  runtime
//
//  Created by dihuijun on 17/3/28.
//  Copyright © 2017年 Cycle. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
/**  
 * 1.nullable :空
 */
/**   name   */
//@property (nonatomic,copy,nullable)NSString *name;
/**   _Nullable 修饰 name   */
@property (nonatomic,copy)NSString *_Nullable name;
//@property (nonatomic,copy)NSString *__nonnull name;


/**
 *  2.Nonnull
 */
/**   name1   */
@property (nonatomic,copy)NSString *_Nonnull name1;
///注意：iOS9新出的关键字nonnull,nullable只能修饰对象，不能修饰基本数据类型
/**   age   */
//@property (nonatomic, assign,nonnull) int age;
//iOS9新出的关键字：修饰属性或者方法的参数，方法的返回值
//好处：
//1.迎合swift
//2.提高我们开发人员的开发规范，减少程序员之间的交流
- (nonnull NSString *)test:(nonnull NSString *)str;
- (NSString *_Nonnull)test1:(NSString *_Nonnull)str;

///这2个之间  默认nonnull
NS_ASSUME_NONNULL_BEGIN

/**   name2   */
@property (nonatomic,copy)NSString *name2;

NS_ASSUME_NONNULL_END




/**
 *  3.null_resettable : get不能返回为空，set可以为空
 get:重写get方法 或者set方法
 
 - (NSString *)str{
  if(str==nil){
  str = @"77";
 }
 return _str;
 }
 */
@property(strong, nonatomic,null_resettable) NSString *name3;



/**
  4._Null_unspecified : 不确定是否为空
 */

@property(strong, nonatomic,null_unspecified) NSString *name4;







@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = @"iOS9新特性";
    self.view.backgroundColor = [UIColor whiteColor];
    
    
    
//       self setName:<#(NSString * _Nullable)#>
//    self setName1:<#(NSString * _Nonnull)#>
    
//    self test1:<#(NSString * _Nonnull)#>
    
    
//    self setName2:<#(NSString * _Nonnull)#>
    
    
//    self setName3:<#(NSString * _Nullable)#>
//    self name3
}

















@end
